// 将用户信息保存到本地的操作
import {setUid,getUid,setUsername,getUsername} from './userInfo'

// 开发模式的url，生产模式的url
const url_all = {
	'DEV': 'http://localhost:8082/airship', // 开发
	// 'DEV': 'http://192.168.0.203:8082/airship', // 开发
	'PRD': '/airship', // 生产环境。不能是 ./ ，因为前端路径会跟着改变
}

export let BASEURL = url_all['DEV']


// 发起请求
function handleRequest(options, resolve, reject) {
	// console.log("request.js::",options.data)
	uni.showLoading({
		title: "加载中",
		mask: true
	});
	let opt = {
		url: BASEURL + options.url,
		method: options.method,
		header: {
			'accept':'application/json',  // 跨域时，accept请求头是 */*，导致后端无法判断ajax请求，所以指定
			// 'x-requested-with':'XMLHttpRequest', // 用于后端判断是否ajax请求，但通过accept请求头也可判断，所以不需要指定
			'uid':getUid(), // 携带用户id，用于后端判断是否登录超时
			'username':getUsername(), // 携带用户名
		},
		data: options.data,
		success: (response) => {
			// if (response.data.code === 3001) {
			// 	logout()
			// }
			// console.log("succss:",response)
			if (response.data.code !== 0) {
				uni.showToast({
					icon: "none",
					duration: 4000,
					title: response.data.msg
				});
				return
			}
			
			resolve(response.data)
		},
		fail: (fail) => {
			console.error("request.js fail：",fail);
			uni.showToast({
				icon: 'none',
				title: "发生错误或服务器没有响应，错误信息："+fail.errMsg
			})
			// 放开下面代码，如果上层没有处理，页面报红
			// reject(fail); 
		},
		complete() {
			uni.hideLoading();
		}
	}
	if(options.header){
		// console.log("options.header：",options.header)
		// opt.data
		for(let key in options.header){
			opt.header[key] = options.header[key]
		}
	}
	uni.request(opt)
}

/**
 * request方法，可以传递更多数据
 */
export const request =(options={})=>{
	return new Promise((resolve,rejects)=>{
		handleRequest(options,resolve,rejects)
	})
}

/**
 * post 请求
 * 数据以json格式发送到服务器
 */
export const post =(url,data)=>{
	return new Promise((resolve,rejects)=>{
		handleRequest(
			{
				url,
				data,
				method:'POST',
			},
			resolve,
			rejects
		)
	})
}

/**
 * get请求
 * 请求头 content-type 的值是 application/x-www-form-urlencoded
 */
export const get =(url,data)=>{
	return new Promise((resolve,rejects)=>{
		handleRequest(
			{
				url,
				data,
				method:'GET',
				header: {
					'content-type' : "application/x-www-form-urlencoded",
				}
			},
			resolve,
			rejects
		)
	})
}